package com.demo15;

import java.io.*;

public class VideoCopyStreamDemo {
    //测试拷贝视频流的几种方法以及时间长短
    public static void main(String[] args) throws IOException {
        // 定义输入流和输出流对象
        FileInputStream fis = new FileInputStream("E:\\振涛教育\\个人学习笔记\\乾坤-微前端的应用.wmv");
        FileOutputStream fos = new FileOutputStream("idea_demo\\java\\乾坤-微前端的应用.wmv");
        //定义开始和结束之间打印时间差
        long start = System.currentTimeMillis();

        //调用函数执行操作
        copy1(fis,fos);
//        copy2(fis,fos);

        long end = System.currentTimeMillis();

        System.out.println("文件复制共"+(end-start)+"毫秒");
    }

    //定义方法直接单个字节或字节数组处理
    public static void copy1(FileInputStream fis,FileOutputStream fos) throws IOException {
        //定义单个字节处理效果
//        int by;
//        while ((by=fis.read())!=-1){
//            fos.write(by);
//        }

        byte[] bys = new byte[128];
        int len;//读取内容的长度
        int ind = 0;
        while ((len = fis.read(bys))!=-1){
//            System.out.println(ind);
            fos.write(bys,0,len);
//            ind++;
        }
        //关闭链接
        fos.close();
        fis.close();
    }

    //第二种使用字节缓冲流的方式实现符
    public static void copy2(FileInputStream fis,FileOutputStream fos) throws IOException{
        //实例化对象信息
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        byte[] bys = new byte[128];

        int len;
        while ((len = bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }

        //关闭
        bos.close();
        bis.close();
        fos.close();
        fis.close();
    }
}